A solid-state drive (SSD) generally has faster performance, is more compact, and is less sensitive to vibration or physical shock than a conventional magnetic disk drive. Given these advantages, SSDs are being used in more and more computing devices and other consumer products in lieu of or in addition to magnetic disk drives, even though the cost-per-gigabyte storage capacity of SSDs is significantly higher than that of magnetic disk drives.
Data is stored in SSDs in many ways to optimize the quality of data during read and write cycles. RAID (redundant array of independent disks) is one example of a data storage virtualization technology that combines multiple SSD components into a single logical unit for the purposes of data redundancy, performance improvement, or both. Data is distributed across the SSDs according to several distribution layouts, known as RAID levels, depending on the required level of data redundancy and desired performance. RAID levels are numbered and currently range from RAID 0 to RAID 6, each of which provide a different balance amongst the key objectives of data storage in SSDs—reliability, availability, performance and capacity. RAID levels greater than RAID 0 provide protection against unrecoverable sector read errors, as well as against failures of whole physical drives.
RAID technology may also be deployed within an SSD, where an SSD controller may assume the additional role of a RAID controller and distribute data across multiple non-volatile memory devices within the SSD in the same way that RAID may be deployed across multiple SSDs. In this case, RAID provides protection against failures of individual memory devices or unrecoverable memory device errors when memory device error rates exceed the error correcting capability of SSD controller error correcting codes (ECC).
Of the several RAID levels available, the RAID 5 distribution layout is well suited for SSDs for optimal data retention during read and write operations. This is because the RAID 5 distribution layout incorporates parity information that is distributed amongst all the drives. In the same way, with RAID deployed within an SSD, RAID 5 data with parity information is written in stripes and distributed across a set of memory devices. With NAND flash non-volatile memory devices, data is also written with ECC parity information which is used to detect and correct NAND flash memory read and write errors and generally utilizes parity bits generated from error correcting codes (ECC) embedded in data transmitted from the SSD controller to the NAND flash memory device. Upon failure of a single device, lost data can be recovered using the distributed data and parity of the RAID stripe, via the Boolean operation XOR with data stored in the remaining memory devices, thereby facilitating subsequent read cycles without any loss of data. Other RAID distributions may also be employed within SSDs to meet specified requirements.
RAID data distribution layouts currently used within SSDs employ synchronous data activity where read and write requests obtained from a hosts are processed sequentially. Such synchronous activity involves the read of all data stored in a buffer in order to generate parity information or reconstruct data after unrecoverable errors, which may be time consuming and which would unnecessarily add stress to the memory controller of an SSD. In view of this, there remains a long felt need for optimized data read and write operations performed by a RAID enabled SSD controller which is less taxing on the SSD controller.